package com.yfp.client.service;

import com.github.binarywang.wxpay.bean.notify.WxPayPartnerNotifyV3Result;
import com.yfp.client.domain.dto.PackSettleDTO;

/**
 *
 * @version 1.0
 * @date 2024-05-24 10:32
 */
public interface PackOrderService {

    /**
     * 套餐结算
     *
     * @param packSettleDTO
     * @return 订单编号
     */
    String settleCombo(PackSettleDTO packSettleDTO);

    /**
     * 订单结算
     *
     * @param packShopId
     * @return
     */
    void checkSettleCombo(Long packShopId);

    /**
     * 创建套餐结算订单
     *
     * @param packSettleDTO
     * @return 订单编号
     */
    String createSettleCombo(PackSettleDTO packSettleDTO);

    /**
     * 取消订单
     *
     * @param orderId
     * @return
     */
    Boolean cancelOrder(String orderId);

    /**
     * 取消订单
     *
     * @param orderId
     * @param reason  取消理由
     * @return
     */
    Boolean cancelOrder(String orderId, String reason);

    /**
     * 套餐结算订单支付回调
     *
     * @param wxPayPartnerNotifyV3Result
     */
    void orderCreateNotify(WxPayPartnerNotifyV3Result wxPayPartnerNotifyV3Result);

    /**
     * 去支付前校验
     *
     * @param orderId
     * @return 是否可以支付
     */
    Boolean settleComboCheck(String orderId);
}
